"""
#!/usr/bin/python
-*- coding:utf-8 -*-
@author  : liziying
@time    : 2022/7/13 20:23
@function: the script is used to do something.
@version : V1
@projectname : haizeiwang
@filename : 高阶函数-homework.py
"""

# 第一题
# lst = ['a', '1', '2bb', '234', '', '9']
# 使用reduce 取出lst里的数字 => 12349
lst = ['a', '1', '2bb', '234', '', '9']
# result = int("".join(list(filter(lambda x:x.isdigit(), lst))))
# print(result)
from functools import reduce
def func1(x,y):
        return x + y
print(reduce(func1, list(filter(lambda x:x.isdigit(), lst))))

# 第二题
# 有以下列表：list1 = [7, -8, 5, 4, 0, -2, -5]
# # 正数在前负数在后
# # 正数从小到大
# # 负数从大到小
list1 = [7, -8, 5, 4, 0, -2, -5]
# print(sorted(list1, key=lambda x:max(list1)-x+1))
print(sorted(list1, key=lambda x:(x<=0,abs(x))))

# 第三题
# 这是一个字符串排序，排序规则：小写<大写<奇数<偶数
# # s = 'asdf234GDSdsf23' => 排序：小写-大写-奇数-偶数
# # 原理：先比较元组的第一个值，FALSE
s = 'asdf234GDSdsf23'
print(sorted(s, key=lambda x:(x.isdigit(),x.isupper(),x.isdigit() and int(x)%2==0,x)))
# (False,False,False,'a')
